//
//  StatusViewModel.swift
//  weibo1990
//
//  Created by 曹晓龙 on 15/10/19.
//  Copyright © 2015年 曹晓龙. All rights reserved.
//

import UIKit

/// 单条微博视图模型
class StatusViewModel:CustomStringConvertible {
    
    /// 单条微博数据
    var status:StatusModel
    
    /// 存放配图URL的数组
    var pictureUrls:[NSURL]?
    
    
    /// cell 重用标示
    var reuseCellID:String{
        if status.retweeted_status != nil {
            // 转发微博
            
            return HomeTableViewCellRetweetedID
        }else{
            
            return HomeTableViewCellNormalID
        }
    }
    
    /// 转发微博文字
    var retweetedText:String?{
        
        guard let s = status.retweeted_status else{
            
            return nil
        }
        
        return "@" + (s.user?.screen_name ?? "") + ":" + (s.text ?? "")
        
    }
    
    /// 懒加载缓存Cell 的高度
    lazy var cellRowHeight:CGFloat = {
        
        var cell:StatusCell
        
        if self.status.retweeted_status != nil {
            
            cell = CXLStatusRetweetCell(style: UITableViewCellStyle.Default, reuseIdentifier: HomeTableViewCellRetweetedID)
            
        }else {
            
            cell = CXLStatusNormalCell(style: UITableViewCellStyle.Default, reuseIdentifier: HomeTableViewCellNormalID)

        }
        
        
        return cell.getCellRowHeight(self)
        
    }()
    
    // MARK:- 构造函数,传入单条微博时,给模型赋值
    init(status:StatusModel){
        
        self.status = status
        
        if let urls =  status.retweeted_status?.pic_urls ?? status.pic_urls {
            
            pictureUrls = [NSURL]()
            
            for dict in urls{
                
                pictureUrls?.append(NSURL(string: dict["thumbnail_pic"]!)!)
            }
        }
    }
    
    var description:String {
        
        return status.description + "\(pictureUrls ?? [] as NSArray)"
    }
    
    
}

// MARK: - 发布微博用户相关
extension StatusViewModel {
 
    /// 认证图片:认证类型，-1：没有认证，0，认证用户，2,3,5: 企业认证，220:达人
    var vipIconImage:UIImage?{
        
        switch(status.user?.verified_type ?? -1) {
        case 0 : return UIImage(named: "avatar_vip")
        case 2,3,4 : return UIImage(named: "avatar_enterprise_vip")
        case 220 : return UIImage(named: "avatar_grassroot")
        default : return nil
        }
    }

    /// 会员头像 :会员等级 0-6
    var memberImage:UIImage?{
        
        if status.user?.mbrank > 0 && status.user?.mbrank < 7 {
            
            let name = "common_icon_membership_level\(status.user!.mbrank)"
            
            return UIImage(named: name)
        }
        
        return nil
    }
    
    /// 站位头像
    var holderImage:UIImage{
        return UIImage(named: "avatar_default_big")!
    }
    
    /// 头像URL
    var iconViewUrl:NSURL{
        
        return NSURL(string: status.user?.profile_image_url ?? "")!
    }
    
}
